home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1988 August / 64er_Magazin_88-08_1988_Markt__Technik_de_Side_B.d64 / tiny eprommer (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  10KB  |  386 lines

  1. 0 rem**********************************      *      tiny eprommer v 2.0       *
  2. 1 rem*      -------------------       *      * 1987 ruediger stahl            *
  3. 2 rem*      hurtenstr. 20             *      *      8138 frieding-andechs     *
  4. 3 rem*                                *      *                                *
  5. 9 rem**********************************
  6. 10 :
  7. 20 print"[147]":poke52,48:poke56,48:poke51,0:poke55,0:poke46,46:poke45,150:clr
  8. 30 ifpeek(49152)=32andpeek(49400)=169then50
  9. 40 print"[147] tiny eprommer v2.0":print" by ruediger stahl
  10. 41 [153]" hurtenstr. 20":[153]" 8138 frieding-andechs
  11. 45 load"ma.tiny eprommer",8,1
  12. 50 lm=49152:dr=49296:bl=49464:bs=49514:co=49606:cl=49716:fi=49848
  13. 55 sys49768
  14. 59 rem typen
  15. 60 dimt$(5),al$(3)
  16. 61 t$(0)="2764 / 21 v "
  17. 62 t$(1)="27128/ 21 v "
  18. 63 t$(2)="27256/12.5 v"
  19. 64 t$(3)="8 kb /12.5 v"
  20. 65 t$(4)="16 kb/12.5 v"
  21. 66 t$(5)="32 kb/ 21 v "
  22. 70 al$(0)=" turbo speed   "
  23. 71 al$(1)=" fast & secure "
  24. 72 al$(2)="standard  50 ms"
  25. 80 ei%=16
  26. 90 ifpeek(820)<>0thenal=int(peek(820)/16):ty=peek(820)-al*16
  27. 91 ifty>5thenty=0
  28. 92 ifal>2thenal=0
  29. 99 :
  30. 100 rem * hauptmenue
  31. 105 poke53280,5:poke53281,0:poke650,0:syscl
  32. 110 print"[153]>>>       tiny eprommer v2.0         <<<";
  33. 120 print"----------------------------------------"
  34. 130 print" bitte waehlen:"
  35. 140 printtab(6)"'f1' = eprom brennen
  36. 145 [153][163]6)"'f3' = typ/allgorithmus waehlen
  37. 150 printtab(6)"'f5' = files/direktory
  38. 155 [153][163]6)"'f7' = zurueck zu basic
  39. 160 printtab(6)"'f2' = eprom leertest
  40. 170 [153][163]6)"'f4' = eprom auslesen
  41. 180 printtab(6)"'f6' = eprom verify
  42. 190 [153][163]6)"'f8' = tools
  43. 200 print"----------------------------------------";
  44. 210 print">>> "t$(ty)" mit "al$(al)" <<[157]"chr$(148)"<";
  45. 220 t=ty:vp=0:ift>1andt<5thenvp=1
  46. 230 ift>2thent=t-3
  47. 250 rem *** auswahl
  48. 260 geta$:ifa$=""then260
  49. 270 a=asc(a$):ifa<133ora>140then260
  50. 280 ona-132gosub 1000,2000,3000,4000,5000,6000,7000,8000
  51. 390 goto100
  52. 1000 rem *** brennen
  53. 1010 syscl
  54. 1015 print" bitte waehlen:
  55. 1020 [153][163]6)"'f1' = zurueck
  56. 1025 printtab(6)"'f3' = speicherinhalt brennen
  57. 1030 [153][163]6)"'f5' = einzelbyteprogrammierung
  58. 1050 geta$:ifa$=""then1050
  59. 1055 a=asc(a$):ifa<133ora>138then1050
  60. 1060 syscl
  61. 1065 ona-132goto 1100,1200,1300
  62. 1100 return
  63. 1200 syscl:print"speicherinhalt in eprom brennen:"
  64. 1205 d=8192*2^t-1:gosub1500:gosub1600
  65. 1206 ife1-a1<>e2-a2then1200
  66. 1210 print"eprom-typ:  ";t$(ty)
  67. 1220 print"allgorithmus:";al$(al)
  68. 1225 gosub50050:ifa$="n"then1200
  69. 1230 syscl:print"      *** eprom wird gebrannt ***"
  70. 1240 sys49920,al,vp,t,a1,a2,e2
  71. 1245 ifpeek(2)>0thengosub50700
  72. 1250 gosub50010
  73. 1260 return
  74. 1300 syscl:print"ein byte programmieren:"
  75. 1305 print"epromadresse (hex) ? 0000";:a$="0000":gosub50120
  76. 1310 gosub50400:a2=a:ifa<0ora>8192*2^t-1then1300
  77. 1315 print"wert         (hex) ? 00";:a$="00":gosub50120:a$="00"+a$
  78. 1320 gosub50400:ifa<0ora>255then1300
  79. 1340 gosub50050:ifa$="n"then1300
  80. 1350 a1=53247:pokea1,a:e1=a1:e2=a2
  81. 1360 print"eprom-typ:  ";t$(ty)
  82. 1365 print"allgorithmus:";al$(al)
  83. 1370 gosub50050:ifa$="n"then1300
  84. 1375 gosub1230
  85. 1395 goto1000
  86. 1500 print"adressen im computer (hex):"
  87. 1505 a$="3000":print"anfangsadresse ? "a$;:gosub50120
  88. 1510 gosub50400:gosub50600
  89. 1511 a1=a:ifa=0thenprint"[145][145][145]":goto1505
  90. 1515 a=a1+d:gosub50600:ifa=0thena=49151
  91. 1516 gosub50500
  92. 1520 print"endadresse     ? "a$;:gosub50120
  93. 1530 gosub50400:gosub50600
  94. 1531 ifa1<49152anda>57334thena=0
  95. 1540 e1=a:ifa=0ora<a1thenprint"[145][145][145][145]":goto1505
  96. 1545 d=a-a1:return
  97. 1600 print"adressen im eprom (hex):"
  98. 1605 a$="0000":print"anfangsadresse ? "a$;:gosub50120
  99. 1610 gosub50400:a2=a
  100. 1611 ifa>8192*2^t-1ora<0thenprint"[145][145][145]":goto1605
  101. 1615 a=a2+d:ifa>8192*2^t-1thena=8192*2^t-1
  102. 1618 gosub50500
  103. 1620 print"endadresse     ? "a$;:gosub50120
  104. 1630 gosub50400:e2=a
  105. 1635 ifa>8192*2^t-1thena=a2-1
  106. 1640 e2=a:ifa<a2thenprint"[145][145][145][145]":goto1505
  107. 1645 d=a-a2:return
  108. 2000 rem *** typ/allgorithmus
  109. 2010 syscl:t=ty
  110. 2015 print" epromtyp und allgorithmus waehlen:"
  111. 2020 printtab(6)"'f1' = zurueck
  112. 2025 [153][163]6)"mit cursertasten auswahlen
  113. 2030 printtab(6)"mit return abspeichern
  114. 2050 [153]"";
  115. 2060 [129]a[178]0[164]5:[139]t[178]a[167][153]"";
  116. 2065 [139]a[177]2[167][153]" spezaltypen: "t$(a)" ":[137]2075
  117. 2070 [153]"       ";t$(a);"        "
  118. 2075 [130]
  119. 2100 [161]a$
  120. 2105 [139]a$[178]"input"[167]2300
  121. 2106 [139]a$[178][199](13)[167]2200
  122. 2110 [139]a$[178]"on"[167]t[178]t[171]1:[139]t[179]0[167]t[178]5
  123. 2115 [139]a$[178]""[167]t[178]t[170]1:[139]t[177]5[167]t[178]0
  124. 2120 [137]2050
  125. 2200 [153]"";
  126. 2210 [129]a[178]0[164]2
  127. 2215 [139]al[178]a[167][153]"";
  128. 2220 [153]"      ";al$(a);"      "
  129. 2225 [130]
  130. 2250 [161]a$
  131. 2255 [139]a$[178]"input"[176]a$[178][199](13)[167]2300
  132. 2265 [139]a$[178]"on"[167]al[178]al[171]1:[139]al[179]0[167]al[178]2
  133. 2270 [139]a$[178]""[167]al[178]al[170]1:[139]al[177]2[167]al[178]0
  134. 2290 [137]2200
  135. 2300 [151]820,t[170]al[172]16:ty[178]t:[142]
  136. 3000 [143] *** files/direktory
  137. 3010 [158]cl
  138. 3015 [153]" bitte waehlen:"
  139. 3020 [153][163]6)"'f1' = zurueck
  140. 3025 printtab(6)"'f3' = direktory
  141. 3030 [153][163]6)"'f5' = programm laden
  142. 3035 printtab(6)"'f7' = programm saven           [160]
  143. 3040 [153][163]6)"'f2' = floppy befehl            close
  144. 3045 printtab(6)"'f4' = fehlerkanal            [160]
  145. 3050 [161]a$:[139]a$[178]""[167]3050
  146. 3055 a[178][198](a$):[139]a[179]133[176]a[177]138[167]3050
  147. 3060 [158]cl
  148. 3065 [145]a[171]132[137] 3100,3200,3300,3400,3500,3600
  149. 3100 [142]
  150. 3200 :
  151. 3205 [158]dr
  152. 3210 [141]50010
  153. 3220 [137]3000
  154. 3300 [158]cl
  155. 3305 [153]"load programm:":[141]3310:[137]3350
  156. 3310 [153]"filename ? ";
  157. 3315 [141]50100:n$[178]a$:[139]n$[178]""[167]3000
  158. 3316 [139]n$[178]""[167][153]"ononon":[137]3310
  159. 3320 a$[178]"8":[153]"geraeteadresse ? "a$;
  160. 3325 [141]50120:g[178][197](a$)
  161. 3326 [139]g[179]1[176]g[177]15[167][153]"ononon":[137]3320
  162. 3330 [142]
  163. 3335 :
  164. 3350 [139]n$[178]""[167][142]
  165. 3351 [139]n$[178]"$"[167]3200
  166. 3354 [153]"unzulaessige bereiche:"
  167. 3355 [153]" $0000-$2fff und $c000-$dfff"
  168. 3360 a$[178]"3000":[153]"anfangsadresse (hex) ? ";a$;
  169. 3365 [141]50120:[141]50400
  170. 3370 [141]50600:[139]a[178]0[167]3300
  171. 3380 [141]50050:[139]a$[178]"n"[167][158]cl:[137]3300
  172. 3390 [158]bl,n$,g,a
  173. 3391 [139]st[179][177]64[167][153]" i/o-error":[137]3394
  174. 3392 a[178][194](781)[170][194](782)[172]256[171]1:[141]50500:[153]" programmende: $";a$
  175. 3394 [141]50010
  176. 3395 [139][194](49152)[178]32[175][194](49400)[178]169[167]3399
  177. 3396 [153]" programm zu lang
  178. 3397 print" epromer diskette einlegen":gosub50010:load"ma.tiny epromer",8,1
  179. 3399 goto3000
  180. 3400 syscl
  181. 3405 print"save programm:":gosub3310
  182. 3406 ifn$=""then3000
  183. 3410 print"anfangsadresse (hex) ? ";
  184. 3420 gosub50100:gosub50400
  185. 3430 ifa=-1then3400
  186. 3435 b=a
  187. 3440 print"endadresse (hex)     ? ";
  188. 3445 gosub50100:gosub50400
  189. 3450 a=a+1:ifa>65535thenprint"letztes byte geht verlohren":a=65535
  190. 3460 gosub50050:ifa$="n"thensyscl:goto3400
  191. 3470 sysbs,n$,g,b,a
  192. 3471 ifst<>0thenprint" i/o-error":gosub50010
  193. 3475 goto3000
  194. 3500 :
  195. 3505 print"floppy-befehl:";
  196. 3510 ei%=25:gosub50100
  197. 3520 open1,8,15,a$:close1
  198. 3600 :
  199. 3605 open1,8,15:print"disk-status:  ";
  200. 3610 get#1,a$:printa$;:if(st and64)=0goto3610
  201. 3615 close1:gosub50010:goto3000
  202. 3620 :
  203. 4000 rem *** basic
  204. 4005 syscl:print"programm benenden:
  205. 4010 [141]50050:[139]a$[178]"n"[167][142]
  206. 4020 [158]49816:[128]:[138]
  207. 5000 [143] *** eprom leertest
  208. 5010 [158]cl:[153]"eprom leertest: (vergleich mit $ff)
  209. 5020 gosub50050:ifa$="n"thenreturn
  210. 5030 sys49929,t,0,0,8192*2^t
  211. 5035 ifpeek(2)=15thenprint" eprom nicht geloescht !":gosub50700
  212. 5036 ifpeek(2)=0thenprint" eprom geloescht !"
  213. 5040 gosub50010:return
  214. 6000 rem *** eprom auslesen
  215. 6010 syscl
  216. 6015 print" bitte waehlen:
  217. 6020 [153][163]6)"'f1' = zurueck
  218. 6025 printtab(6)"'f3' = eprominhalt in com-
  219. 6026 [153][163]13)"puter einlesen
  220. 6030 printtab(6)"'f5' = einzelbyteauslese
  221. 6050 [161]a$:[139]a$[178]""[167]6050
  222. 6055 a[178][198](a$):[139]a[179]133[176]a[177]135[167]6050
  223. 6060 [158]cl
  224. 6070 [145]a[171]132[137]6100,6200,6300
  225. 6100 [142]
  226. 6200 [158]cl:[153]"eprominhalt in computer einlesen:
  227. 6205 d=8192*2^t-1:gosub1600:gosub1500
  228. 6206 ife1-a1<>e2-a2then6200
  229. 6225 gosub50050:ifa$="n"then6200
  230. 6230 sys49923,t,a1,a2,e2
  231. 6240 gosub50010:return
  232. 6300 syscl:print"ein byte auslesen:
  233. 6305 [153]"epromadresse (hex) ? 0000_cmd";:a$[178]"0000":[141]50120
  234. 6310 [141]50400:a2[178]a:[139]a[179]0[176]a[177]8192[172]2[174]t[171]1[167]6300
  235. 6340 [141]50050:[139]a$[178]"n"[167]6300
  236. 6350 a1[178]53247:[158]49923,t,a1,a2,a2
  237. 6355 a[178][194](a1):[141]50500:[153]"wert:";[194](a1);"= $";a$
  238. 6360 [141]50010:[137]6000
  239. 7000 [143] *** eprom verify
  240. 7100 [158]cl:[153]"eprominhalt mit computer vergleichen:
  241. 7105 d=8192*2^t-1:gosub1600:gosub1500
  242. 7106 ife1-a1<>e2-a2then7100
  243. 7125 gosub50050:ifa$="n"then7100
  244. 7130 sys49926,t,a1,a2,e2
  245. 7135 ifpeek(2)=15thenprint" verify error !":gosub50700:goto7140
  246. 7136 print" eprominhalt correct !"
  247. 7140 gosub50010:return
  248. 8000 rem *** tools
  249. 8010 syscl
  250. 8015 print" bitte waehlen:"
  251. 8020 printtab(6)"'f1' = zurueck
  252. 8025 [153][163]6)"'f3' = modulgenerator
  253. 8030 printtab(6)"'f5' = tiny-mon
  254. 8035 [153][163]6)"'f7' = speicherber. verschieben
  255. 8040 printtab(6)"'f2' = speicherber. fuellen
  256. 8050 [161]a$:[139]a$[178]""[167]8050
  257. 8055 a[178][198](a$):[139]a[179]133[176]a[177]137[167]8050
  258. 8060 [158]cl
  259. 8065 [145]a[171]132[137] 8100,8200,8300,8110,8120
  260. 8100 [142]
  261. 8110 [141]8450:[137]8000
  262. 8120 [141]8600:[137]8000
  263. 8200 [158]cl:[153]" modulstartgenerator wird nachgeladen.
  264. 8210 gosub50050:ifa$="n"thenreturn
  265. 8220 sys49816
  266. 8230 load"modulgen. v2.0",8
  267. 8300 syscl:poke650,128:ad=12288:print" tiny-mon:
  268. 8305 [153]"  'f1' = zurueck
  269. 8308 print"  'f3' = transver
  270. 8309 [153]"  'f4' = speicherbereich fuellen
  271. 8310 print"  'f5'/'f7';'f6'/'f8';crsr = scroll
  272. 8315 [153]"  return = wert abspeichern
  273. 8350 syslm,ad
  274. 8360 print"[145][145][145][145]_[157][157][157]";
  275. 8370 geta$:ifa$=""then8370
  276. 8371 ifa$="[133]"thenpoke650,0:return
  277. 8372 ifasc(a$)>47andasc(a$)<58then8395
  278. 8373 ifasc(a$)>64andasc(a$)<71then8395
  279. 8374 ifasc(a$)=13then8400
  280. 8378 ifa$="[134]"thengosub8450:goto8300
  281. 8379 ifa$="[138]"thengosub8600:goto8300
  282. 8380 ifa$="[135]"thenad=ad-80
  283. 8381 ifa$="[136]"thenad=ad+80
  284. 8382 ifa$="[139]"thenad=ad-1024
  285. 8383 ifa$="[140]"thenad=ad+1024
  286. 8384 ifa$="[145]"thenad=ad-8
  287. 8385 ifa$=""thenad=ad+8
  288. 8386 ifa$=""thenad=ad+1
  289. 8387 ifa$="[157]"thenad=ad-1
  290. 8388 ifad<0thenad=65535
  291. 8389 ifad>65535thenad=0
  292. 8390 w$="":goto8350
  293. 8395 ifw$=""thenw$=" "
  294. 8398 w$=w$+a$:iflen(w$)>2thenw$=right$(w$,2)
  295. 8399 printw$"[157][157]";:goto8370
  296. 8400 ifw$=""then8410
  297. 8401 ifleft$(w$,1)=" "thenw$="0"+right$(w$,1)
  298. 8405 a$="00"+w$:gosub50400:pokead+16,a
  299. 8410 ad=ad+1:w$="":goto8350
  300. 8420 :
  301. 8450 rem transver
  302. 8455 syscl
  303. 8460 print" transver (hex):"
  304. 8465 print" von: ";:gosub50100:ifa$=""thenreturn
  305. 8470 gosub50400:a1=a:ifa<0then8450
  306. 8475 print" bis: ";:gosub50100:ifa$=""thenreturn
  307. 8480 gosub50400:e1=a:ifa<0then8450
  308. 8485 print" nach:";:gosub50100:ifa$=""thenreturn
  309. 8490 gosub50400:a2=a:ifa<0then8450
  310. 8500 a$="06":print" speicherkonfiguration (auch hex): ";a$;:ei%=2
  311. 8501 gosub50120:ifa$=""thenreturn
  312. 8505 a$="00"+a$:gosub50400:ifa<0then84505
  313. 8540 e1=e1+1:ife1>65535thene1=e1-65536
  314. 8550 sysco,a1,e1,a2,a
  315. 8560 return
  316. 8600 rem fill
  317. 8605 syscl
  318. 8610 print" speicherbereich fuellen (hex):"
  319. 8615 print" (greift immer auf ram zu !)
  320. 8620 [153]" von: ";:[141]50100:[139]a$[178]""[167][142]
  321. 8630 [141]50400:a1[178]a:[139]a[179]0[167]8600
  322. 8640 [153]" bis: ";:[141]50100:[139]a$[178]""[167][142]
  323. 8650 [141]50400:e1[178]a:[139]a[179]0[167]8600
  324. 8660 a$[178]"ff":[153]" wert:";a$;:ei%[178]2
  325. 8665 [141]50120:[139]a$[178]""[167][142]
  326. 8670 a$[178]"00"[170]a$:[141]50400:[139]a[179]0[167]8600
  327. 8680 e1[178]e1[170]1:[139]e1[177]65535[167]e1[178]e1[171]65536
  328. 8690 [158]fi,a1,e1,a
  329. 8695 [142]
  330. 8700 :
  331. 50000 [143] *** unterroutinen
  332. 50010 [143] auf tastendruck warten
  333. 50020 [151]198,0
  334. 50025 [139][194](214)[177]21[167][153]""
  335. 50030 [153]:[153]"        t a s t e   d r u e c k e n    "
  336. 50045 [146]198,1,0:[151]198,0:[142]
  337. 50050 [143] eingabe ok ?
  338. 50060 [151]198,0
  339. 50070 [153]:[153]"   a l l e s   oclosek aclosey   (j/n)  ?      wait"
  340. 50075 [146]198,1,0:[161]a$
  341. 50080 [139]a$[179][177]"j"[175]a$[179][177]"n"[167]50075
  342. 50085 [142]
  343. 50100 [143] input von 16 zeichen
  344. 50110 a$[178]"":
  345. 50120 [153]"_cmd";:[161]b$:[139]b$[179][177]""[167]50130
  346. 50122 [129]a[178]0[164]80:[130]:[153]"_waitcmd";
  347. 50125 [161]b$:[139]b$[179][177]""[167]50130
  348. 50127 [129]a[178]0[164]80:[130]:[137]50120
  349. 50130 [139][198](b$)[178]13[167][153]"_":ei%[178]16:[142]
  350. 50140 [139][198](b$)[177]31[175][198](b$)[179]128[167]50200
  351. 50150 [139][198](b$)[177]161[167]50200
  352. 50160 [139]b$[179][177][199](20)[175]b$[179][177]"cmd"[167]50120
  353. 50170 [139][195](a$)[179]1[167]50120
  354. 50180 a$[178][200](a$,[195](a$)[171]1)
  355. 50190 [153]" cmdcmd_cmd";
  356. 50195 [137]50120
  357. 50200 [139][195](a$)[179]ei%[167]50300
  358. 50210 [153]" cmdcmd";
  359. 50220 a$[178][200](a$,[195](a$)[171]1)
  360. 50300 a$[178]a$[170]b$
  361. 50310 [153]b$;"_cmd";
  362. 50350 [137]50120
  363. 50400 [143] hex in dez (b$ in b)
  364. 50410 a[178][171]1:[139][195](a$)[177]4[176][195](a$)[179]1[167][142]
  365. 50420 [129]x[178]1[164][195](a$)
  366. 50430 z[178][198]([202](a$,x,1))
  367. 50440 [139]47[179]z[175]z[179]58[167]z[178]z[171]48:[137]50470
  368. 50450 [139]z[179]65[176]z[177]71[167]a[178][171]1:x[178]4:[130]:[142]
  369. 50460 z[178]z[171]55
  370. 50470 a[178]a[170]z[172]16[174]([195](a$)[171]x)
  371. 50490 [130]:a[178]a[170]1:[142]
  372. 50500 [143] dez in hex (a in a$)
  373. 50510 a$[178]"":[129]x[178]3[164]0[169][171]1:w[178][181](a[173]16[174]x)
  374. 50520 a[178]a[171]w[172]16[174]x:[139]w[177]9[167]w[178]w[170]7
  375. 50530 a$[178]a$[170][199](w[170]48)
  376. 50540 [130]:[142]
  377. 50600 [143] a zulaessig ?
  378. 50610 [139]a[177]49151[175]a[179]57344[167]a[178]0
  379. 50620 [139]a[179]3[172]4096[176]a[177]65535[167]a[178]0
  380. 50640 [142]
  381. 50700 [143] aktuelle adresse
  382. 50710 a[178][194](169)[170][194](170)[172]256:[153]
  383. 50720 [153]" epromadresse:";a;:[141]50500:[153]" = $";a$
  384. 50750 [142]
  385. 60000 :
  386.